package com.cheng.design.demo.template.impl;

import com.cheng.design.demo.template.SendMailTemplate;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * qq 邮箱发送
 * @author Cheng
 */
public class SendQQMailTemplate implements SendMailTemplate {

    // 接收者集合，excle中读取出想要的字段值存到这个map
    Map<String, Object> map;

    // 发送的账号
    String account;

    // 模板
    String template;

    /**
     * 初始化获取发送邮件的邮箱账号密码权限等，构造发送器
     * @param account 账号，演示只使用账号演示了
     */
    public SendQQMailTemplate(String account) {
        this.account = account;
    }


    /**
     * 模板方法，这里面通用发代码写这里面，回调那些函数执行
     */
    @Override
    public void sendMail(Object excel, Object template) {
        // 1. 先从excle中读取出想要的字段值
        this.reloadMapInExcel(excel);
        // 2. 读取模板
        Object template1 = this.reloadTemplate(template);
        // 3. 在excel中读取出的字段值拼接到模板
//        this.replaceSign(map, template1);

        for (Map.Entry<String, Object> entry: map.entrySet()) {
            ArrayList<String> placeholders = new ArrayList<>();

            // todo: 这边要遍历值里面的参数值的，因为我写了map的值为String所以简单解决了
            placeholders.add((String) entry.getValue());

            Object o = this.replaceSign(placeholders, this.template);

            // 4. 发送
            System.out.println("============执行真正的发送==============");
            System.out.println("真正发送的内容：" + o.toString());
        }
    }

    @Override
    public Map<String, Object> reloadMapInExcel(Object excel) {
        return null;
    }

    @Override
    public Object reloadTemplate(Object template) {
        return null;
    }

    @Override
    public Object replaceSign(List<String> placeholders, Object template) {
        return null;
    }
}
